package com.mmall.service;

import com.mmall.common.ServerResponse;
import com.mmall.vo.CartVo;

/**
 * 购物车模块
 */
public interface ICartService {

    /**
     * 购物车添加商品
     * @param userId 用户id
     * @param productId 商品id
     * @param count 商品数量
     * @return
     */
    ServerResponse<CartVo> add(Integer userId, Integer productId, Integer count);

    /**
     * 更新购物车 商品数量
     * @param userId 用户id
     * @param productId 商品id
     * @param count 商品数量
     * @return
     */
    ServerResponse<CartVo> update(Integer userId, Integer productId, Integer count);

    /**
     * 删除指定的购物车中的商品
     * @param userId 用户id
     * @param productIds 要删除的商品id
     * @return
     */
    ServerResponse<CartVo> deleteProduct(Integer userId, String productIds);

    /**
     * 查询购物车
     * @param userId 用户id
     * @return
     */
    ServerResponse<CartVo> list(Integer userId);

    /**
     * 全选和全不选,以及是否是单选还是取消单选
     * @param userId 用户id
     * @param checked 状态 是选中状态还是不是选中状态看此参数
     * @param productId 商品id，如果传递有值 不是null 则是单选和取消单选
     * @return
     */
    ServerResponse<CartVo> selectOrUnSelect(Integer userId,Integer checked,Integer productId);

    /**
     * 查询当前用户的购物车里面的产品数量,如果一个产品有10个,那么数量就是10个
     * @param userId 用户id
     * @return
     */
    ServerResponse<Integer> getCartProductCount(Integer userId);
}
